package com.shujia.day01;

public class Demo04Var {
    public static void main(String[] args) {
        /*
            Java中的常量：(该处的常量是指具体的值)
                1.字面值常量
                    1.1 字符串常量 由多个字符组成，使用""括起来
                    1.2 整数常量
                        进制:
                        二进制
                        八进制 1234 => 4*8^0 +3*8^1+ 2*8^2+ 1*8^3 =
                        十进制 1234 = 4*10^0 +3*10^1+ 2*10^2+ 1*10^3
                        十六进制
                        如何将对应进制转成10进制？
                            将对应位置上的数据 乘以对应位置表示的10进制数，再进行累加 和10进制的表示方式一样
                               其中对应位置N上的10进制数 是当前进制的N-1次方  N从1开始
                        如何将10进制转成其他进制
                            52(十进制) => a*8^0 + b*8^1  => a,b的数值就可以表示 8进制下的52
                                       经过计算可以得到 8进制下表示为 64
                            52(十进制) => a*2^0 + b*2^1... => 110100
                            16(十进制) => a*16^0 + b*16^1... => 34
                            总结：
                                对十进制数据 进行做除法 如果转成N进制，那么每次除以N 将得到的余数单独取出 将商
                                    作为下一次的除数 再进行一轮计算直到其商为0 将得到的余数进行反转 就是转换的结果

                            63 => 8进制
                            62 / 8 = 7 ... 6
                            7 /  8 = 0 ... 7
                            结果为 76
                        快捷方式：
                            十进制和二进制的快速转换
                             8421码   => 1*2^4+1*2^3+1*2^2+1*2^1+1*2^0
                             100 转成二进制 => 01100100
                             01101 转成十进制 => 0*2^4+1*2^3+1*2^2+0*2^1+1*2^0 = 13

                        二进制和八进制，十六进制如何转换
                            以十进制作为桥梁 =>
                                100110 转成 八进制 => 100110转成10进制再将结果转成 8进制
                                    100110  1*2^5+0*2^4+0*2^3+1*2^2+1*2^1+0*2^0 => 38
                                    38 => 转成8进制 => 46
                            二进制到八进制  3位组合 =>
                                将2进制数据从右向左 每3个分成一组 再计算每组对应的10进制数据 再将得到的结果拼接
                            二进制到十六进制	4位组合
                                将2进制数据从右向左 每4个分成一组 再计算每组对应的10进制数据 再将得到的结果拼接
                                100110 转成 16进制 =>  0010  0110 => 26

                    2341728723(10进制数据) => 转成8进制
                    234172723(8进制数据) => 转成2进制

                    1.3 小数常量
                    1.4 字符常量 字符是由单个的字符组成 使用''括起来
                    1.5 布尔常量 只有true/false 值为关键字
                    1.6 空常量 null 为一个关键字 扩展：null只能用于引用类型

                2.自定义常量(涉及到对象阶段)
         */
        String str = "";
//        String str2 = ''; 字符串只能使用 "" 表示

        char ch = '1'; // 在该处其表示的是一个字符而不是整数
        int i = 1; // 表示为一个整数

        boolean bool1 = true;
        boolean bool2 = false;

        String strNull = null;

//        int i2 = null;

        // 默认为10进制
        System.out.println(1234);
        // 二进制 以0b开头
        System.out.println(0b100); // 4
        // 八进制 以0开头
        System.out.println(0100); //64
        // 十六进制 以0x开头 0-9 a b c d e f
        System.out.println(0x100); // 256

        System.out.println(0x34);
        System.out.println(064);
        System.out.println(0b110100);
        System.out.println(066);
        System.out.println("==========");
        System.out.println(0b1100100);
    }
}
